home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Just Call Me Internet
/
Just Call Me Internet.iso
/
prog
/
atari
/
m2
/
cat3src
/
magic
/
d
/
mtrandom.d
< prev
next >
Wrap
Text File
|
1997-10-26
|
4KB
|
82 lines
(*----------------------------------------------------------------------*
* *
* MAGICTOOLS Modula's All purpose GEM Interface Cadre Toolbox *
* ÿ ÿ ÿ ÿ ÿ *
*----------------------------------------------------------------------*
* Version 3.30 02.02.1992 (C)90/91/92 by Peter Hellinger Software *
*----------------------------------------------------------------------*
* Dieses Modul ist urheberrechtlich geschtzt. *
* *
* Die Verffentlichung des Quelltextes oder Teilen daraus, sowie die *
* Verbreitung des bersetzten, nicht gelinkten Codes in schriftlicher, *
* oder maschinenlesbarer Form, insbesondere in Zeitschriften, Mail- *
* boxen oder anderen Medien bedarf der ausdrcklichen schriftlichen *
* Einverstndnisserklrung des Autors. *
* *
* Die Verbreitung des Moduls als Teil eines gelinkten Programms ist *
* fr Lizenznehmer ausdrcklich erlaubt! Der Autor behlt sich das *
* Recht vor, diese Erlaubnis jederzeit und ohne Angaben von Grnden zu *
* widerrufen. *
*----------------------------------------------------------------------*)
(*----------------------------------------------------------------------*
* mtRandom Zufallszahlengenerator. Der Algorithmus basiert auf *
* Donald E. Knuths Additive congruential method aus "The *
* art of computer programming, V2" *
*----------------------------------------------------------------------*)
DEFINITION MODULE mtRandom;
FROM MagicSys IMPORT Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
PROCEDURE Randomize;
(* Initialisiert den Generator. Eine Zufallszahlen-Sequenz nach einem
* Randomize kann nicht wiederholt werden. Randomize wird im Modulkrper
* bereits aufgerufen, so da immer ein initialisierter Generator zur
* Verfgung steht.
*)
PROCEDURE RandomInit (initial: CARDINAL);
(* Initialsiert ebenfalls den Generator, mit dem Unterschied, da eine
* Sequenz von Zufallszahlen wiederholt werden kann. Dazu wird die
* Variable 'initial' benutzt, um die erste Zufallszahl zu erzeugen.
* Ein Aufruf von RandomInit mit gleicher 'initial' erzeugt immer die
* gleiche Sequenz Zufallszahlen.
*)
PROCEDURE RndCard (max: sCARDINAL): sCARDINAL;
(* Liefert eine Zufalls-CARDINAL, im Bereich 0 bis max - 1, wenn max > 0,
* bzw. im Bereich 0 bis MAX (CARDINAL) wenn max = 0
*)
PROCEDURE RndLCard (max: lCARDINAL): lCARDINAL;
(* Liefert eine Zufalls-LONGCARD, im Bereich 0 bis max - 1, wenn max > 0,
* bzw. im Bereich 0 bis MAX (LONGCARD) wenn max = 0
*)
PROCEDURE RndInt (max: sINTEGER): sINTEGER;
(* Liefert eine Zufalls-INTEGER, im Bereich 0 bis max - 1, wenn max > 0,
* bzw. im Bereich 0 bis MAX (INTEGER) wenn max = 0
*)
PROCEDURE RndLInt (max: lINTEGER): lINTEGER;
(* Liefert eine Zufalls-LONGINT, im Bereich 0 bis max - 1, wenn max > 0,
* bzw. im Bereich 0 bis MAX (LONGINT) wenn max = 0
*)
PROCEDURE RndReal (): REAL;
(* Liefert eine REAL im Bereich 0.0 bis < 1.0 *)
PROCEDURE RndLReal (): LONGREAL;
(* Liefert eine LONGREAL im Bereich 0.0 bis < 1.0 *)
END mtRandom.